package cn.assumejson.springframework.beans.factory.support;

import cn.assumejson.springframework.beans.factory.BeansException;
import cn.assumejson.springframework.beans.factory.config.BeanDefinition;
import cn.assumejson.springframework.core.io.Resource;
import cn.assumejson.springframework.core.io.ResourceLoader;

/**
 * @author Mr. Li
 * @version 1.0
 * @since 1.0 2021/11/30 12:57
 */
public interface BeanDefinitionReader {
    /**
     * 获取注册的beanDefinition
     *
     * @return BeanDefinitionRegistry
     */
    BeanDefinitionRegistry getRegistry();

    /**
     * 获取资源加载器
     *
     * @return ResourceLoader
     */
    ResourceLoader getResourceLoader();

    /**
     * 加载给定的资源中所有的bean并封装为beanDefinition
     *
     * @param resource 资源
     * @throws BeansException
     */
    void loadBeanDefinitions(Resource resource) throws BeansException;

    void loadBeanDefinitions(Resource... resources) throws BeansException;

    void loadBeanDefinitions(String location) throws BeansException;
}
